shallow copy vs deep copy in python